;:sys36864
	;.opt oo
	*= 49152
;
; 64 keys
; nikolaus m. heusler
; ---
; XXXXXXXXXXXX XX
; 8000 muc 71
; ---
; (c) 5.90, kommentar 6.92
;
old	=$eb48	;alte tastatur-auswertung
;
; **** beginn hauptprogramm
	lda #<new
	ldy #>new	;vektor fuer tastatur-auswertung
	sta 655
	sty 656	;auf neue routine umlenken
	lda #<hi
	ldy #>hi
	jmp $ab1e	;einschaltmeldung ausgeben
; text einschaltmeldung
hi	.byte "\x93\x11  *** 64 key v1 c64  (c) nh-030590 ***"
	.byt 13,13
	.byte " von nikolaus heusler  ein nss-programm"
	.byt 13,0
last	brk	;letzte gedrueckte taste
; tabelle #1 - codes der steuertasten
tab1	.byt 41,62,38,39,18,14,21,55,26,33,42,17,34
	.byt 37,13,22,30,31,20,10,36,9,57,12,25,23,28,29,53
	.byt 1,51,49,46,43,40,54,48,47,44,2,7,0,45,50
	.byt 4,5,6,3,-1
; tabelle #2 - zeiger auf befehlswoerter
tab2	.byt 23,66,31,2,6,0,1,25,33,5,72,73,9,13
	.byt 68,35,55,69,71,70,74,18,3,30,12,7,41,16,27,14
	.byt 28,15,32,34,10,26,21,39,41,20,19,11,59,56
	.byt 53,54,52,67
; **** neue routine zur tastatur-auswertung
; diese neue routine wird vom system bei
; jedem interrupt automatisch ausgefuehrt
new	lda 212	;quote modus testen
	beq evtl	;wenn nicht aktiv, ok
nix	lda #64
	sta last	;keine taste
	jmp old	;und abbruch
; abbruch, wenn insert-modus oder (ctrl) nicht gedrueckt
evtl	lda $d8
	bne nix
	lda 203
	cmp last
	beq foul
	lda 653
	and #4
	beq nix
	lda 203
	cmp 197
	beq nix	;(ctrl) wurde schon vorher gedrueckt
	ldy #-1
loop1	iny
	lda tab1,y	;tastencodes lesen
	bmi nix	;abbruch bei tabellenende
	cmp 203	;mit gedrueckter taste vergleichen
	bne loop1	;falsch, dann weiter
	ldx tab2,y	;zugehoeriges befehlswort laden
	ldy #-1	;mit erstem zeichen beginnen
	txa
	beq loop3	;befehlswort gefunden
loop2	iny
	lda $a09e,y
	bpl loop2
	dex
	bne loop2	;befehlswort suchen
loop3	iny
	lda $a09e,y
	bmi loop4
	sta 631,x
	inx
	bne loop3	;naechstes token
; befehlswort-text in tastaturpuffer kopieren
loop4	and #127	;bit 7 loeschen
	sta 631,x	;in tastenpuffer schreiben
	inx	;naechstes byte lesen
	stx 198	;anz. gedrueckter tasten
	lda 203
	sta last
foul	lda #64
	sta 203	;sonst keine taste gedrueckt
	sta 197	;altes muster loeschen
	jmp old	;weiter in systemroutine
